diff --git a/.gitignore b/.gitignore
index df973dd..056950b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -108,3 +108,5 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/8d72cbe9b24557ef/7_MAXDEPTH.ipch
Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/d67b185b0905d0e0/7_MAXDEPTH.ipch
Alogrithm/.vs/Alogrithm/v16/TestStore/3/001.testlog
Alogrithm/Alogrithm/Debug/7_MaxDepth.obj
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/5507929c4351e38d/8_HAMMINGWEIGHT.ipch
+Alogrithm/Alogrithm/Debug/8_HammingWeight.obj
diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo
index b3b564a..134d266 100644
Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj
index cb9a2f8..2f9ea17 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj
@@ -147,6 +147,7 @@
+
@@ -157,6 +158,7 @@
+
@@ -166,6 +168,7 @@
+
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
index 9c8452f..4b6745b 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
@@ -48,6 +48,9 @@
源文件\src
+
+ 源文件\src
+
@@ -71,6 +74,9 @@
头文件\include
+
+ 头文件\include
+
@@ -94,5 +100,8 @@
资源文件\config
+
+ 资源文件\config
+
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/config/8_HammingWeight.ini b/Alogrithm/Alogrithm/config/8_HammingWeight.ini
new file mode 100644
index 0000000..5946722
--- /dev/null
+++ b/Alogrithm/Alogrithm/config/8_HammingWeight.ini
@@ -0,0 +1,21 @@
+[TEST1]
+input=3
+output=2
+[TEST2]
+input=0
+output=0
+[TEST3]
+input=1
+output=1
+[TEST4]
+input=4
+output=1
+[TEST5]
+input=214748368
+output=13
+[TEST6]
+input=214748400
+output=14
+[TEST7]
+input=4294967295
+output=31
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/include/8_HammingWeight.h b/Alogrithm/Alogrithm/include/8_HammingWeight.h
new file mode 100644
index 0000000..c16a0d2
--- /dev/null
+++ b/Alogrithm/Alogrithm/include/8_HammingWeight.h
@@ -0,0 +1,4 @@
+#pragma once
+
+#include
+int HammingWeight(uint32_t n);
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/8_HammingWeight.cpp b/Alogrithm/Alogrithm/src/8_HammingWeight.cpp
new file mode 100644
index 0000000..23febbb
--- /dev/null
+++ b/Alogrithm/Alogrithm/src/8_HammingWeight.cpp
@@ -0,0 +1,12 @@
+#include"../include/8_HammingWeight.h"
+//8.һcount¼1ĸκ1Ϊ1count1Ϊ0count0
+//һλѭIJֱn=0ʱ
+int HammingWeight(uint32_t n)
+{
+ int n_Count = 0;
+ while (n) {
+ n_Count += n & 1;
+ n >>= 1;
+ }
+ return n_Count;
+}
\ No newline at end of file
diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp
index 86c93e6..041ba31 100644
--- a/Alogrithm/UnitTest/UnitTest.cpp
+++ b/Alogrithm/UnitTest/UnitTest.cpp
@@ -9,6 +9,9 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework;
#define FileName_5 "../Alogrithm/config/5_MinDepth.ini"
#define FileName_6 "../Alogrithm/config/6_ContainsDuplicate.ini"
#define FileName_7 "../Alogrithm/config/7_MaxDepth.ini"
+#define FileName_8 "../Alogrithm/config/8_HammingWeight.ini"
+
+
namespace UnitTest
{
@@ -132,4 +135,19 @@ namespace UnitTest
}
}
};
+ TEST_CLASS(UnitTest_8)
+ {
+ TEST_METHOD(TestMethode1)
+ {
+ char Section_Name[100][10] = { 0 };
+ int Section_Count = CalcCount(100, Section_Name, FileName_8);
+ CString Na, nExpect;
+ for (int i = 0; i < Section_Count; i++) {
+ GetPrivateProfileString(Section_Name[i], "input", " ", Na.GetBuffer(20), 20, FileName_8);
+ GetPrivateProfileString(Section_Name[i], "output", " ", nExpect.GetBuffer(100), 100, FileName_8);
+ int nReal = HammingWeight(_ttoi(Na));
+ Assert::AreEqual(nReal, _ttoi(nExpect));
+ }
+ }
+ };
}
diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj
index 9573ad6..f6b117a 100644
--- a/Alogrithm/UnitTest/UnitTest.vcxproj
+++ b/Alogrithm/UnitTest/UnitTest.vcxproj
@@ -103,7 +103,7 @@
Windows
$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)
DebugFull
- ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;%(AdditionalDependencies)
+ ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;%(AdditionalDependencies)
diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h
index 63a8b83..accfddc 100644
--- a/Alogrithm/UnitTest/pch.h
+++ b/Alogrithm/UnitTest/pch.h
@@ -20,6 +20,7 @@
#include"../Alogrithm/include/5_MinDepth.h"
#include"../Alogrithm/include/6_ContainsDuplicate.h"
#include"../Alogrithm/include/7_MaxDepth.h"
+#include"../Alogrithm/include/8_HammingWeight.h"
int CalcCount(int n, char(*str)[10],const char *FileName);