C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

#include <stdio.h>
/*
十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方;
在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15
例如:CE=12*16^1+14*16^0=192+14=206
*/
unsigned short int right(unsigned short int num, int n){
	return (num<<n) | (num>>(sizeof(num)-n));
}
int main(void)
{
	unsigned  short int  num = 0xFA;// 最多4个 0xFABCD 报错
	unsigned  short int num2 = 0x2345; //short int 短整型占2个字节 共2*8=16个二进制位

	printf("您输入的十六进制数:%#x\n",num);
	printf("%#x十六进制数转换成十进制为:%d\n",num,num);

	printf("该十六进制数占二进制位:%d 个位\n",sizeof(num)*8);

	return 0;
}

  

原文地址:https://www.cnblogs.com/wanglijun/p/8476656.html

时间: 2024-12-28 22:06:11

C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方的相关文章

用Linux/Unix命令把十六进制转换成十进制(转)

那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用C语言什么的容易多了,就一些现成的命令就解决了. 先列两种简单的方法: 1) echo 自己就能实现,相当简单.不过,不知道如果要从十进制转换回十六进制能怎么写. ]$ echo $((0xac))    172 2) printf 也可以哦,十六进制和十进制互相转换都没问题 ]$ printf %d 0xac    172    ]$ printf %x 172    ac 然后,稍微麻烦一

数组-08. 字符串转换成十进制整数

数组-08. 字符串转换成十进制整数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果过滤后字符串的首字符为“-”,代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内.

5-2?字符串转换成十进制整数

5-2 字符串转换成十进制整数   (15分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果在第一个十六进制字符之前存在字符"-",则代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内. 输入样例: +-P-xf4+-1!# 输出样例: 这个题有一个坑点: 就是如果是0的话前面没有负号 -390

数组-08. 字符串转换成十进制整数(15)

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string s; 6 int i,sum=0; 7 bool flag=false,f=false; 8 getline(cin,s); 9 for(i=0;s[i]!='#';++i){ 10 if(s[i]=='-'&&!flag) 11 f=true; 12 else if(s[i]<='9'&a

二进制转换成十进制的问题

if(x%2 == count%2)  //if括号内为判断 ,可替换    r += i;        i *= 2;             //上两行解决了二进制转换成十进制的问题

其他进制的数值转换成十进制数值的方法

二进制转换成十进制 存在二进制数 01110101 先写上 0 1 1 1 0 1 0 1 然后填充,零位不填 2^6=64 2^5=32 2^4=16 2^2=4 2^0=1 相加 64 32 16 4 1 最后结果 117 十六进制数转换成十进制 存在十六进制数 2AF5 先写上 2 A F 5 然后填充 2*16^3 10*16^2 10*16^1 10*16^0 相加最后结果 10997 八进制数转换成十进制 存在八进制数 24378 先写上 2 4 3 7 8 然后填充 2*8^4 4

0063-二进制转换成十进制

二进制转换成十进制 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给定一个不超过 10 位的二进制数 n,将其转换成十进制数后输出. 输入 一个符合规范的二进制的数. 输出 一个数,符合题目要求的结果. 输入示例 1000100 输出示例 68 此题考查大家对数学基本知识的了解程度.从二进制转换为十进制的方法为:从右往左数第n位乘2的n次方. 通过while循环(即满足括号里条件是执行操作)进行当n不为零(即未转换完成)时

经纬度转换成十进制

public class TestJingWeiDU { public static void main(String[] args) { TestJingWeiDU t = new TestJingWeiDU(); String lat = "35.37.39.55324"; String lon = "139.44.13.1546"; t.countLatLon(lat); t.countLatLon(lon); t.countLatLon("35.6

C语言中函数参数为什么是由右往左入栈的?

先通过一个小程序来看一看: #include void foo(int x, int y, int z) { printf("x = %d at [%X]n", x, &x); printf("y = %d at [%X]n", y, &y); printf("z = %d at [%X]n", z, &z); } int main(int argc, char *argv[]) { foo(100, 200, 300);