C++八进制十六进制

1、数的进制

默认进制:

默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。


int i, j, k, l;
cout<<”Input i(oct), j(hex), k(hex), l(dec):”<<endl;
cin>>oct>>i; //输入为八进制数
cin>>hex>>j; //输入为十六进制数
cin>>k; //输入仍为十六进制数
cin>>dec>>l; //输入为十进制数
cout<<”hex:”<<”i=”<<hex<<i<<endl;
cout<<”dec:”<<”j=”<<dec<<j<<′\t′<<”k=”<<k<<endl;
cout<<”oct:”<<”l=”<<oct<<l;
cout<<dec<<endl; //恢复十进制输出状态

【执行结果】:
(1)输出提示:Input i(oct), j(hex), k(hex), l(dec):
(2)此时从键盘输入: 032 0x3f 0xa0 17 <CR>
(3)输出结果为:

hex:i=1a
dec:j=63 k=160
oct:l=21

几点说明:

使用不带.h的头文件<iostream>时,必须在cin中指明数制,否则从键盘输入时,不认八进制和十六进制数开头的0和0x标志。指明后可省略0和0x标志。

进制控制只适用于整型变量,不适用于实型和字符型变量。

输入数据的格式、个数和类型必须与cin中的变量一一对应,否则不仅使输入数据错误,而且影响后面其他数据的正确输入。

在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。


C语言:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	unsigned char buf[5] = {0};
	int i;
	float f;

	for (i =0; i<4; i++) 
	{
		printf("请输入第%d个数:/n", i+1);
		scanf("%x", &buf[i]);
	}

	memcpy(&f,  buf, sizeof(float));

	printf("float=%f/n", f);
	

	return 0;
}

以十六进制格式输入四个数,输出由这四个数组成的浮点数的值。



### C++ 中实现十进制换为二进制八进制十六进制C++中,默认情况下,数据按照十进制进行输入输出。为了将整数以其他进制的形式显示,可以使用`std::cout`中的操纵器来改变输出格式。 #### 使用标准库函数进行换 对于八进制十六进制换可以直接利用内置的支持: - `std::oct`: 设置后续整数值以八进制形式输出。 - `std::hex`: 设置后续整数值以十六进制形式输出。 - `std::dec`: 恢复到默认的十进制输出模式[^2]。 然而,对于二进制并没有直接支持的操作符,因此需要编写自定义逻辑或借助第三方库完成此功能。 下面给出一段简单的代码示例展示如何从十进制换成不同进制表示法: ```cpp #include <iostream> using namespace std; int main() { int num; cout << "请输入一个十进制数字: "; cin >> num; // 输出原始十进制值 cout << dec << "Decimal: " << num << endl; // 将其设置为八进制并打印出来 cout << oct << "Octal: " << num << endl; // 切换回十进制前缀以便正确解释下一个数字 cout << dec; // 打印该数作为十六进制字符串 cout << hex << uppercase << "Hexadecimal: " << num << endl; return 0; } ``` 这段程序会先让用户输入一个十进制数,之后分别将其以八进制和大写的十六进制格式输出。注意这里用了`uppercase`使得字母A-F都变成大写了。 至于二进制换,则可以通过位运算手动构建对应的二进制串,如下所示: ```cpp string decimalToBinary(int n){ string binary = ""; while (n != 0) { binary = to_string(n % 2) + binary; n /= 2; } return binary.empty()? "0":binary; } // 或者更简洁的方式使用 bitset 库 #include <bitset> string decimalToBinaryBitSet(int n){ return bitset<32>(n).to_string(); } ``` 上述两种方法都可以有效地把给定的十进制整数化为它的二进制表达方式。其中第二种方法更加简便直观,因为它依赖于STL提供的`bitset`类模板来进行处理[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值