1. 程式人生 > >16位2進位制補碼轉換為10進位制

16位2進位制補碼轉換為10進位制

//

// main.c

//  162進位制補碼轉換為10進位制

//

// Created by LongMa on 15/8/7.

//  Copyright (c) 2015 itcast. All rights reserved.

/*  1.十進位制值 == 各位之和

權(用陣列儲存) = 數碼(迴圈右移 i 位後 & 1 x 基數(本題是2 ^ 數位(右移 i 位,權位就是 i);

再求各位的權之和(迴圈累加)

 ps:負數--在移位到最高位(i = 15)時,使權為負數。單獨判斷!只移位 0~14

*/

#include <stdio.h>

int nCiFangOf2(int

n)

{

    int res = 1;

    for (int l =0; l < n; l++)

    {

       res *= 2;

    }

    return res;

}

int main(intargc, const char* argv[])

{

    // insertcode here...

//   int a2Jz = 0b1000000000000000;

    int a2Jz = 0b0000000000010001;

    int quanGw[16];

    int num10Jz = 0;

/*先移0~14位,再判斷第15*/

    for (int i = 0; i < 15

;i++)

    {

       quanGw[i] =( (a2Jz >> i) & 1) * nCiFangOf2(i);

    }

    if (1 == a2Jz>> 15)

    {

       quanGw[15] = -nCiFangOf2(15);

    }

/*迴圈累加求和得對應10進位制數 */

    for (int j = 0; j < 16;j++)

    {

       num10Jz +=quanGw[j];

    }

printf("a2Jz 對應的 10進位制數為:%d\n",num10Jz);

    return

0;

}

相關推薦

162補碼轉換10

// // main.c //  16位2進位制補碼轉換為10進位制 // // Created by LongMa on 15/8/7. //  Copyright (c) 2015年 itcast. All rights reserved. /*  1.十進位制值 == 各位權之和; 權(用陣列儲存)

mysql16資料轉換10資料

需求:表中的資料的16進位制儲存在資料庫中,先需要將資料按照10進位制進行輸出解決方法:使用mysql自帶的conv函式進行資料轉換語法如下:conv(N,from base ,to base)例項1:SELECT conv( '0a', 16, 10 )例項2:set @n = "0926F281";sel

面試題----16轉換10

題目描述 寫出一個程式,接受一個十六進位制的數值字串,輸出該數值的十進位制字串。(多組同時輸入 ) 輸入描述: 輸入一個十六進位制的數值字串。 輸出描述: 輸出該數值的十進位制字串。 示例1

Ex 2_25 n整數轉換形式..._第四次作業

運行時 es2017 整數 cnblogs 二進制 .cn http bsp alt (a) 當n=1時,(10)d=(1010)b 當n=2時,(100)d=(10)d x (10)d=(1010)b x (1010)b 當n=4時,(

超長的十六轉換

之前在oj上做過,今天做藍橋杯基礎練習又遇到了這題 but沒有一遍AC 基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 提交此題 錦囊1 錦囊2 問題描述   給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式   輸入的第一行為一個正整數

c語言的n轉換10

#include<string.h> int main() {long t1; int i,n,t,t3; char a[100]; printf("please input anumber string:\n"); gets(a); strupr(a); t3=

Python學習:將N轉換M

題目描述 程式設計實現將一個N進位制數轉換成M進位制數。 問題分析 將N進位制數轉換為M進位制數的一個直接的方法就是將N進位制數首先轉換為十進位制數,再從十進位制數往M進位制轉換

Java如何將十六轉換數的程序

swift int i++ 進制數 pub 原理 lin uppercase enter package com.swift; import java.util.Scanner; public class Hex2Decimal { public stati

mysql16數據轉換10數據

解決 現在 相互 ase 數據轉換 存儲 col 行數據 watermark 需求:表中的數據的16進制存儲在數據庫中,先需要將數據按照10進制進行輸出解決方法:使用mysql自帶的conv函數進行數據轉換語法如下:conv(N,from base ,to base)實例1

用棧實現將十進位制數轉換任意數(2,8,16...).

解題思路:假如N為輸入的數,n為要轉換為的進位制,若要將十進位制231轉換為8進位制數,過程如下; N                        N/n                      N%n 231                   28         

c語言將16轉換10

前言 要轉換的字串中包含可選的字首0x或者0X, 程式碼 /* * Created by sutaoyu on 2018/10/2 * */ #include<stdio.h> #in

兩位元組16轉換int

有時候在報文中會碰到以兩個位元組來存出一個整型的資料,例如0x0080,將其重新轉換成int的方法是: char a = 0x80;//低位 char b = 0x00;//高位 int value = (int)((unsigned char)a | (unsigned char)b<

C中16轉換10函式

第一種情況:16進制中不含字母(a,b,c,d,e,f) long HexToDec(int nSource) { long nResult=0; int k=16;

X轉換Y(X,Y2到64間的任意數)

思路: 1.X進位制轉換為10進位制 2.10進位制轉化為Y進位制 import java.util.Scanner; /** * X進位制到Y進位制轉換(範圍在2到64之間) * 思路:1.X進位制轉換為10進位制 * 2.10進位制轉換為Y進位制

十進位制轉換

/*十進位制轉二進位制輸出 */ void fun1(int n) { if(n/2)// 非0為真 fun1(n/2); putchar('0'+n%2); } /*十進位制轉八進位制輸出 */ void fun2(int n) { if(n/8)

棧-十進位制整數轉換

十進位制數N和其他d進位制數的轉換是計算機實現計算的基本問題。有一個簡單演算法基於下列原理: N=(N div d) * d + N mod d (div為整除運算,mod為求餘運算) 對於輸入的任

關於轉換問題,10轉換26

目前有一個數n,想用A-Z組合表示出來,即 1=A,2=B,3=C,26=Z,27=AA,28=AB,等等。 首先考慮二進位制,二進位制由0和1組成,10進位制轉換為二進位制時候,用除以2取餘的方法, 仿照這種方法,我們取一個數1000,來計算它用字母表示的方法:

隨筆-數字(任意轉換十六

題目: 給定一個整數,編寫一個演算法將這個數轉換為十六進位制數。對於負整數,我們通常使用 補碼運算 方法。 注意: 十六進位制中所有字母(a-f)都必須是小寫。 十六進位制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元’0’來表示;對於其他情況,十六進位制字串

轉換10轉其他

  先說一下上圖結構中各個字母表示的意思: A:要轉的進位制(除數) B:10進位制數字(被除數) C:餘數 D:商   轉換的結果統計規則: 除以進位制數取餘,然後餘數倒序排列,高位補零。   10進位制轉2進位制 下

m轉換n-任意轉換演算法

轉自:http://www.cnblogs.com/pkuoliver/archive/2010/10/27/Convert-m-number-to-n-number.html園子裡有很多深藏不漏的高手,在這裡聊這種基本問題是有點小兒科。不過本人只是想分享下自己的新的,程式碼,演算法有不足之處,還請大家指正,